The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Today, increasingly large and more complex networks are being created and used to provide services for companies worldwide. Such networks may consist of many devices that are linked together by numerous connections, and a large variety of types of network devices may be used. For example, the types of network devices include, but are not limited to, switches, routers, bridges, central processing units (CPU's), storage devices, terminal servers, load balancers, firewalls, external hubs, or any other device that may be incorporated into a network. A network may organize and arrange the devices and other equipment in one or more densely packed equipment racks.
There may be differences among types of network devices depending on other factors, such as the specific role for a particular network device or the identity of the manufacturer of the network device. A large variety of types of connections between network devices are available, such as serial connections, various forms of Ethernet, and fiber connections. All of the variations in network devices, functions performed by the network devices, differences among manufacturers, and variations in interconnections result in highly differentiated and complex networks.
One challenge arising from such networks is how to configure a network with the right number of each type of device and other equipment so that the network configuration satisfies a set of requirements. For example, the owner of a network may desire that the network have a specified set of devices, such as a particular number of servers, load balancers, and firewalls and a particular storage capacity. Additional requirements may include the cost of the network, the amount of power required to run all the network equipment, and the amount of floor space required for the network.
A “server farm” is one example of such a network in which servers and other network devices are made available for use by a variety of other clients or companies. Some server farms are implemented using a wide scale computing fabric (“computing grid”). The computing grid can be physically constructed once, and then logically divided up for various organizations on demand. A part of the computing grid is allocated to each of a plurality of enterprises or organizations. Each organization's logical portion of the computing grid is a “virtual network system,” which is sometimes referred to as a Virtual Server Farm (VSF). Each organization retains independent administrative control of its VSF. Each VSF can change dynamically in terms of number of CPUs, storage capacity and disk and network bandwidth based on real-time demands placed on the server farm or other factors. Each VSF is secure from every other organization's VSF, even though they are all logically created out of the same physical computing grid. A VSF can be connected back to an Intranet using either a private leased line or a Virtual Private Network (VPN), without exposing the Intranet to other organizations' VSFs.
One approach for configuring a network is to use a planning tool that is based on a decision tree to select from available options to identify an acceptable configuration or design. FIG. 1 is a logical block diagram that depicts a decision tree 100 that includes a set of decision blocks 104 and a set of design blocks 108. A user works through each level of the set of decision blocks 104, selecting one of the available options at each decision block, to reach an acceptable design block from the set of design blocks 108.
For example, assume that a user begins in decision block 110 that asks how many database (DB) servers are desired for the network. The available choices are “TWO” or “FOUR” DB servers as depicted in FIG. 1. The user selects “TWO,” which leads to decision block 120. The user then selects the Windows operating system (OS) at decision block 120, which leads to decision block 142, where the user selects the number of storage devices. If the user wants only one storage device, the designer arrives at design block 164, which specifies a network design having two DB servers, the Windows OS, and one storage device.
However, the decision tree based approach has several drawbacks. For example, if the user later decides to use the Solaris OS instead of Windows, the user must backtrack in decision tree 100 to decision block 120 to change the OS selection from Windows to Solaris, and then navigate through decision block 140 to reach design block 160 (assuming the number of storage devices is unchanged). If the user wanted to change the number of DB servers, the user would have to backtrack in decision tree 100 even further and then navigate through the same choices, although in different decision blocks, to reach a new design block from the set of design blocks 108. For larger, complex networks, the number of decision blocks and design blocks can be very large, involving dozens of decisions and hundreds of possible designs, which makes changing prior decisions very inconvenient and time consuming.
Another problem with the decision tree based approach is that the decision blocks and design blocks are predetermined. In decision tree 100, each decision block in the set of decision blocks 104 and each design block in the set of design blocks 108 are established when decision tree 100 is created. For example, in decision block 110, only two options are provided for the number of DB servers, one or two. In practice, the decision block may allow for many possible values (e.g., the number of DB servers or a storage capacity for the network), and therefore the decision tree can provide a branch for each possible value or at least a reasonable set of possible values. For example, in decision block 110, the network designer could enter the number of DB servers desired, which would be implemented in decision tree 100 as a different branch for each possible value. If decision tree 100 accommodates any integer from one to twenty, then there would be twenty branches leading from decision block 110, and for each branch, a decision block would be included for choosing the OS.
Unfortunately, allowing for a broad selection of options at each design block greatly increases the complexity of a decision tree, and the more complex the decision tree becomes, the more difficult it is for an administrator to maintain decision tree and the more difficult it is for a user to navigate and backtrack when necessary through the decision tree. Furthermore, not only is the user limited to selecting from the options presented at each decision block, ultimately the user is limited to selecting a design from those represented in the set of design blocks, which again must be chosen to balance the need for a wide selection of possible designs yet control the complexity of the decision tree.
Based on the foregoing, it is desirable to provide improved techniques for generating a description of a configuration for a network.